//
//  MXDatasouceHelper.m
//  cinderella
//
//  Created by Heller on 15/9/14.
//  Copyright (c) 2015年 Laka inc. All rights reserved.
//

#import "TableViewHelper.h"
#import "MJRefreshFooter.h"
#import "MJRefreshHeader.h"
#import "UIScrollView+MJRefresh.h"

@interface TableViewHelper ()

@end

@implementation TableViewHelper

- (instancetype)initWith:(UITableView *)tableView
{
    self = [super init];
    if(self) {
        
        self.tableView = tableView;
        
        if (tableView.estimatedRowHeight < 0) {
            tableView.estimatedRowHeight = 0;
        }
        
        if (tableView.estimatedSectionHeaderHeight < 0) {
            tableView.estimatedSectionHeaderHeight = 0;
        }
        
        if (tableView.estimatedSectionFooterHeight < 0) {
            tableView.estimatedSectionFooterHeight = 0;
        }
    }
    
    return self;
}

#pragma mark - Setter

- (void)setTableView:(UITableView *)tableView
{
    if (_tableView != tableView) {
        _tableView = nil;
        _tableView = tableView;
        
        self.currentScrollView = tableView;
    }
}

#pragma mark - LVDatasourceHelperProtocol

- (void)reloadData
{
    [self.tableView reloadData];
}

- (void)loadMore
{
    if (self.isLoading) {
        return;
    }
    
    [super loadMore];
    
    if (self.tableView) {
        if(self.delegate && [self.delegate respondsToSelector:@selector(load:tableView:)]) {
            [self.delegate load:self.currentPage tableView:self.tableView];
        }
    }
}

- (void)setCoverHeader:(BOOL)coverHeader
{
    [super setCoverHeader:coverHeader];
}

- (void)reload
{
    if (self.isLoading) {
        return;
    }
    
    [super reload];
        
    [self.currentScrollView.mj_footer setHidden:YES];
    if(self.showLoading && ![[self.currentScrollView mj_header] isRefreshing] && self.hintView == nil){
        if(self.delayLoadingInterval > 0.0){
            [self performSelector:@selector(delayLoading) withObject:nil afterDelay:self.delayLoadingInterval];
        }else {
            [self delayLoading];
        }
    }
    
    if (self.tableView) {
        if(self.delegate && [self.delegate respondsToSelector:@selector(load:tableView:)]) {
            [self.delegate load:self.currentPage tableView:self.tableView];
        }
    }

    self.loadOnce = YES;
}

- (void)reloadNotPullView
{
    [super reloadNotPullView];
    
    if (self.tableView) {
        if(self.delegate && [self.delegate respondsToSelector:@selector(load:tableView:)]) {
            [self.delegate load:self.currentPage tableView:self.tableView];
        }
    }
}

- (void)reloadAndAutoPullView
{
    [super reloadAndAutoPullView];
}

@end
